const WXAPI = require('utils/api')
const CONFIG = require('config.js')
const AUTH = require('utils/auth')
App({
  globalData: {},

  getLaunchOptionsSync(e) {
    // 获取小程序启动时的参数。与 App.onLaunch 的回调参数一致。
    // https://miniapp.xiaohongshu.com/doc/DC742608
    // path query scene shopId
    console.log('App:getLaunchOptionsSync', e);
  },

  getEnterOptionsSync(e) {
    // 获取本次小程序启动时的参数。
    // 如果当前是冷启动，则返回值与 App.onLaunch 的回调参数一致；
    // 如果当前是热启动，则返回值与 App.onShow 一致。
    // path query scene shopId
    console.log('App:getEnterOptionsSync', e);
  },

  onError(e) {
    // 小程序发生脚本错误或 API 调用报错时触发。也可以使用 xhs.onError 绑定监听
    console.error('App:onError=======', e);
  },

  onLaunch(opts, data) {
    // 参数也可以使用 xhs.getLaunchOptionsSync 获取
    // path query scene shareTicket
    // shareTicket，  xhs.getShareInfo 获取到分享者信息，或者直接读取
    console.log('App:onLaunch========', opts);
    WXAPI.init(CONFIG.subDomain)
    WXAPI.setMerchantId(CONFIG.merchantId)
    this.updateManager = xhs.getUpdateManager();
    this.updateManager.onUpdateReady(() => {
      xhs.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启小程序？',
        confirmText: '重启',
        success: res => {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            this.updateManager.applyUpdate();
          }
        },
      });
    });
    WXAPI.queryConfigBatch(CONFIG.configKeys).then(res => {
      if (res.code == 0) {
        res.data.forEach(config => {
          xhs.setStorageSync(config.key, config.value);
        })
        if (this.configLoadOK) {
          this.configLoadOK()
        }
      }
    })
   
    if (data && data.path) {
      xhs.navigateTo({
        url: data.path,
      });
    }
  },
  onPageNotFound(opts) {
    // 小程序要打开的页面不存在时触发。也可以使用 xhs.onPageNotFound 绑定监听。注意事项请参考 xhs.onPageNotFound
    console.log('App:onPageNotFound========', opts);
  },
  onShow(e) {
    // 参数：与 xhs.onAppShow 一致
    // shareTicket，  xhs.getShareInfo 获取到分享者信息，或者直接读取
    console.log('App:onShow=======', e);
    // 保存邀请人
    if (e && e.query && e.query.inviter_id) {
      xhs.setStorageSync('referrer', e.query.inviter_id)
    }
    // 自动登录
    AUTH.checkHasLogined().then(isLogined => {
      if (!isLogined) {
        AUTH.authorize().then( aaa => {
          this.updateUserInfoAndMobile()
        })
      } else {
        this.updateUserInfoAndMobile()
      }
    })
  },
  onHide(opts) {
    console.log('App:onHide=======', opts);
  },
  async updateUserInfoAndMobile() {
    const res = await WXAPI.userDetail(xhs.getStorageSync('token'))
    if (res.code != 0) {
      return
    }
    this.globalData.userBaseInfo = res.data.base
  },
});
